#ifndef ELICOBJECT_H_
#define ELICOBJECT_H_
#include<math.h>
#include<vector>
#include<ctime>
#include "../baseclass/Elem3D.h"
#include "../baseclass/GameStatus.h"
#include "../spec/RoketObject.h"
#include "../spec/BulletObject.h"
#include "../utils/Defines.h"


class ElicObject : public Elem3D
{
     static bool compiled; 
private:
    
    float rot_ant;      //angolo rot pala ant
    float rot_post;     //angolo rot pala post
    float drot;         //velocita di rotazione delle pale
    float drotinc;      //incremento della velocità di rotazione         
    
    _GLMmodel  * modcop;           // modello elicottero
    _GLMmodel  * model_ant;        // modello elica maggiore
    _GLMmodel  * model_post;       // modello elica post
    RoketObject * rokets[ROKET_NUM];       // modello missile
    BulletObject * bullets[MAX_BULLET_NUM]; // numero proiettile 
    
    //contatori e indici dei missili
    int weakroket_count;
    int heavyroket_count;
    int weakroket_count_tot;
    int heavyroket_count_tot;
    int bullet_count_tot;
    bool choose_sx_dx;           //scelta del mitragliatore dx o sx
    
    time_t  bullet_time;         //tempo proiettile a disposizione
    time_t  roket_time;          //tempo missile a disposizione
    bool  bullet_ready;          //flag proiettile a disposizione
    bool  roket_ready;           //flag missile a disposizione
    bool  shootWR;               //flag abilità sparo
    bool  shootHR;
    bool  shootB;
    
    static int modcop_list_name;         //nome lista
    static int model_ant_name;           //nome lista
    static int model_post_name;          //nome lista

    
    
    
public:
    ElicObject(GameStatus* g): Elem3D(g){}
	ElicObject();
	virtual ~ElicObject();
    void LoadRoket();
    void LoadModel();
    void LoadLists();
    void Draw();
    void Init();
    void DoIdle();
    void ShootHeavyRoket();
    void ShootWeakRoket();
    void Reset_WeakRoket();
    void Reset_HeavyRoket();  
    void ShootBullet();
    void DoIdleTakeoff();
    
    void SetShootWR() {shootWR = true;}
    void SetShootHR() {shootHR = true;}
    void SetShootB()  {shootB = true;}
    void UnsetShootWR() {shootWR = false;}
    void UnsetShootHR() {shootHR = false;}
    void UnsetShootB()  {shootB = false;}
};

#endif /*ELICOBJECT_H_*/


